package contato.DAO;

import java.util.ArrayList;

import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;
import javax.persistence.Query;

import rta.dataacess.Rastreadores;
import rta.dataacess.Usuario;

public class UsuarioDao extends GenericDAO<Usuario> {

	public UsuarioDao() {
		super(Usuario.class);

	}

	public UsuarioDao(EntityManager entityManager) {
		super(Usuario.class, entityManager);
	}

	public Usuario findEmail(String email) {

		Usuario usuario = null;
		String hql = "FROM Usuario WHERE email = ?";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);

		query.setParameter(1, email);

		try {

			usuario = (Usuario) query.getSingleResult();

			return usuario;

		} catch (RuntimeException e) {
			System.out.println(e);
			return usuario = null;

		}
	}

	public Usuario UltimoUser() {

		Usuario usuario = null;
		ArrayList<Usuario> list;

		String hql = "FROM Usuario ORDER BY id DESC LIMIT 1 ";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);

		list = (ArrayList<Usuario>) query.getResultList();

		for (Usuario usu : list) {

			usuario = usu;
			break;

		}

		return usuario;
	}

	public Usuario findByNome(String nome) {
		Usuario usuario = null;
		String hql = "FROM Usuario WHERE nome = ?";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);

		query.setParameter(1, nome);

		try {

			usuario = (Usuario) query.getSingleResult();

			return usuario;

		} catch (RuntimeException e) {
			System.out.println(e);
			return usuario = null;

		}
	}

	public ArrayList<Usuario> findbyUsuarioPermitido(Integer id) {
		ArrayList<Usuario> arrayList;

		String hql = "FROM Usuario WHERE userper = ?";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);

		query.setParameter(1, id);

		try {

			arrayList = (ArrayList<Usuario>) query.getResultList();

			return arrayList;

		} catch (RuntimeException e) {
			System.out.println(e);
			return arrayList = null;

		}

		
	}
}
